#pragma once
#include "DXAMLCommon.h"
#include "IPALFile.h"
#include "IPlatformUtilities.h"
#include "IPALClock.h"
#include "IPALApplicationSingleton.h"



class IPALCoreServices
{

public:
	virtual HRESULT          FileCreate( XUINT32 cFileName, XCHAR * pFileName, XINT32 fileOptions, IPALFile **ppFile) = 0;
	virtual HRESULT          GetPlatformUtilities( IPlatformUtilities **ppInterface) = 0;
	virtual HRESULT          GetSystemColor( XINT32 colorIndex, XINT32 *pSysColor) = 0;
	virtual HRESULT          CreatePowerAvailablityRequest(void **) = 0;
	virtual HRESULT          DisablePowerManagement(void *) = 0;
	virtual HRESULT          EnablePowerManagement(void *) = 0;
	virtual HRESULT          FreePowerAvailablityRequest(void *) = 0;
	virtual XUINT64          GetCPUTime() = 0;
	virtual XUINT64          GetCPUMilliseconds() = 0;
	virtual HRESULT          GetOSTime( XSYSTEMTIME *pTime) = 0;
	virtual HRESULT          CreateClock( IPALClock **ppIClock) = 0;
	virtual HRESULT          GetNumberOfCPUCores( XUINT32 *pcProcessorCores) = 0;
	virtual XUINT32          IsSupportedPlatform() = 0;
	virtual HRESULT          GetRandomBytes( XUINT32 cbRandom, char *pRandom) = 0;
	virtual HRESULT          GetApplicationSingleton( IPALApplicationSingleton **ppSingleton) = 0;
	virtual XUINT32          GenerateSecurityToken() = 0;
	virtual HRESULT          GetKeyboardModifiersState( XUINT32 *pModifiers) = 0;
	virtual XUINT32          PerformanceFrequency( XINT64_LARGE_INTEGER *lpFrequency) = 0;
	virtual XUINT32          PerformanceCounter( XINT64_LARGE_INTEGER *lpPerformanceCount) = 0;
	virtual HRESULT          CallCoInitializeMTA() = 0;
	virtual void             CallCoUninitialize() = 0;
	virtual HRESULT          GetClientInformation( XINT32 *pcItems, XCHAR * *ppItems) = 0;
	virtual HRESULT          IsOnRemoteDesktopSession( XUINT32 *pfOnRemoteDesktop) = 0;
};